class UsuarioComumFunctionalTests extends functionaltestplugin.FunctionalTestCase {
    
	private String createUsuario = "http://localhost:9090/SPL_V3/usuarioComum/create"
        private String searchAdministrador = "http://localhost:9090/SPL_V3/administrador/search"
	
    void testeCriarUsuario() {
        get(this.createUsuario)
		assertStatus 200
		redirectEnabled = false
		form {
			username = "simples"
			passwd = "123456"
			email = "simples@gmail.com"
			telefone = "33332345"
			userRealName = "Carlos Testing"
                        projeto = "Novo Projeto"
                        novo_projeto = "spl"
                        tipo = "Doutorado"
			click "Criar"
		}
                assertRedirectUrlContains "show"
                //followRedirect()
		//assertContentContains("Usuario criado com sucesso.")
		
    }
	
		void testeCriarUsuarioCadastrado() {
        get(this.createUsuario)
		assertStatus 200
		form {
			username = "simples"
			passwd = "123456"
			email = "simples@gmail.com"
			telefone = "33332345"
			userRealName = "Carlos"
                        projeto = "Novo Projeto"
                        novo_projeto = "spl"
                        tipo = "Doutorado"
			click "Criar"
		}
		assertContentContains("Login ja esta registrado.")
		
    }
	
	 /*void testeCriarUsuarioSemSenha() {
        get(this.createUsuario)
		assertStatus 200
		
		form {
			username = "especialsimples"
			passwd = ""
			email = "chefia@gmail.com"
			telefone = "33332345"
			userRealName = "Carlos"
			click "Criar"
		}
		assertContentContains("Senha nao pode ser vazio.")
		
    }*/
	
		void testeCriarUsuarioTelefoneGrande() {
        get(this.createUsuario)
		assertStatus 200
		form {
			username = "clientegfdasfoldasd"
			passwd = "clientegoldasd"
			email = "semarroba@mgial.com"
			telefone = "33333435472657264594632345"
			userRealName = "Lilian"
			click "Criar"
		}
		assertContentContains("")
		
    }
	
		void testeCriarUsuarioLoginGrande() {
        get(this.createUsuario)
		assertStatus 200
		form {
			username = "clientegoldadafssdclientegoldasdclientegoldasdsdclientegoldasdclientegoldasd"
			passwd = "clientegoldasd"
			email = "semarroba@mgial.com"
			telefone = "33323"
			userRealName = "Lilian"
			click "Criar"
		}
		assertContentContains("")
		
    }
	
	void testeCriarUsuarioSemLogin() {
        get(this.createUsuario)
		assertStatus 200
		
		form {
			username = ""
			passwd = "clientegold"
			email = "chefia@gmail.com"
			telefone = "33332345"
			userRealName = "Carlos"
			click "Criar"
		}
		assertContentContains("Login nao pode ser vazio.")
		
    }
	
	void testeCriarUsuarioSemEmail() {
        get(this.createUsuario)
		assertStatus 200
		
		form {
			username = "clientesimples"
			passwd = "clientegold"
			email = ""
			telefone = "33332345"
			userRealName = "Carlos"
			click "Criar"
		}
		assertContentContains("Email nao pode ser vazio.")
		
    }
	
		void testeCriarUsuarioSemArroba() {
        get(this.createUsuario)
		assertStatus 200
		form {
			username = "clientesimples"
			passwd = "clientegold"
			email = "semarroba"
			telefone = "33332345"
			userRealName = "Carlos"
			click "Criar"
		}
		assertContentContains("Formatacao de email invalida.")
		
    }
	
	void testeCriarUsuarioSemNome() {
        get(this.createUsuario)
		assertStatus 200
		
		form {
			username = "clientesimples"
			passwd = "clientegold"
			email = "semarroba"
			telefone = "33332345"
			userRealName = ""
			click "Criar"
		}
		assertContentContains("Nome nao pode ser vazio.")
    }

        void testeEditarUsuario(){
        get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Carlos Testing"
			click "Consultar"
		}
                click "Ver mais"
                form{
                    click "Editar"
                }
                form{
                        username = "simples"
			passwd = "123456"
			email = "mudei@gmail.com"
			telefone = "33332345"
			userRealName = "Carlos Testing"
                        projeto = "Novo Projeto"
                        novo_projeto = "spl"
                        tipo = "Doutorado"
			click "Criar"
                }
                assertRedirectUrlContains "show"
                followRedirect()
                assertContentContains("Dados de Usuario atualizado com sucesso.")
    }



        void testeEditarUsuarioSemLogin(){
        get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Carlos Testing"
			click "Consultar"
		}
                click "Ver mais"
                form{
                    click "Editar"
                }
                form{
                        username = "simples"
			passwd = "123456"
			email = "mudei@gmail.com"
			telefone = "33332345"
			userRealName = "Carlos Testing"
                        projeto = "Novo Projeto"
                        novo_projeto = "spl"
                        tipo = "Doutorado"
			click "Criar"
                }
                assertRedirectUrlContains "show"
                followRedirect()
                assertContentContains("Login nao pode ser vazio.")
    }

        void testeEditarUsuarioSemPassword(){
        get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Carlos Testing"
			click "Consultar"
		}
                click "Ver mais"
                form{
                    click "Editar"
                }
                form{
                        username = "simples"
			passwd = "123456"
			email = "mudei@gmail.com"
			telefone = "33332345"
			userRealName = "Carlos Testing"
                        projeto = "Novo Projeto"
                        novo_projeto = "spl"
                        tipo = "Doutorado"
			click "Criar"
                }
                assertRedirectUrlContains "show"
                followRedirect()
                assertContentContains("Senha nao pode ser vazio.")
    }



    void testRemoverUsuario(){
            get(this.searchAdministrador)
		assertStatus 200
		redirectEnabled = false
		form {
			name = "Carlos Testing"
			click "Consultar"
		}
                click "Ver mais"
                form{
                    click "Remover"
                }
                assertRedirectUrlContains "list"
                followRedirect()
                assertContentContains("deleted.")
    }
	
}
